{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0c63cd89",
   "metadata": {},
   "outputs": [],
   "source": [
    "from OpticalSensor import CA410Sensor as EyeSensor\n",
    "#from f500 import EyeSensor\n",
    "import time\n",
    "\n",
    "import jtoollib as jt\n",
    "from pic_window import *\n",
    "\n",
    "import math\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7822a84d",
   "metadata": {},
   "source": [
    "# GAM调试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a2abab8a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 0.5324782\n",
      "1 0.536443\n",
      "32 6.5929299\n",
      "64 28.784396\n",
      "128 125.90717\n",
      "192 305.93809\n",
      "224 435.40004\n",
      "254 594.74427\n",
      "255 601.801\n",
      "目标Gamma： 2.2\n",
      "目标灰阶： [0, 1, 32, 64, 128, 192, 224, 254, 255]\n",
      "目标亮度： [601.801, 0.5355308714914128, 6.78434941441337, 29.258534918599818, 132.52277459282857, 322.5969168475901, 452.6233218508629, 596.6257877902256, 0.5324782]\n",
      "Target Gray 1 best reg: 0x19 Measure y 0.5366352 Target y 0.5355308714914128\n",
      "Target Gray 32 best reg: 0x60 Measure y 6.8023731 Target y 6.78434941441337\n",
      "Target Gray 64 best reg: 0x97 Measure y 29.490503 Target y 29.258534918599818\n",
      "Target Gray 128 best reg: 0x5e Measure y 132.29333 Target y 132.52277459282857\n",
      "Target Gray 192 best reg: 0x6e Measure y 322.59845 Target y 322.5969168475901\n",
      "Target Gray 224 best reg: 0xae Measure y 453.16826 Target y 452.6233218508629\n",
      "Target Gray 254 best reg: 0xf5 Measure y 596.82058 Target y 596.6257877902256\n",
      "==============最优reg=============\n",
      "D8 D7 D6 D5 D4 D3 D2 D1 D0\n",
      "D9 DA DB DC DD DE DF E0 E1\n",
      "14 19 60 97 5E 6E AE F5 FF\n"
     ]
    }
   ],
   "source": [
    "# 目标gamma\n",
    "gamma_target = 2.2\n",
    "\n",
    "# 1. 实例化传感器对象（根据实际串口号和波特率修改）\n",
    "sensor = EyeSensor(port='COM13')\n",
    "sensor.XYZmode()\n",
    "\n",
    "# 扫描JI2C\n",
    "devices = jt.scan_devices_sn()\n",
    "# 开启JI2C\n",
    "handle = jt.open_device(devices[0])\n",
    "\n",
    "y_list = []\n",
    "gray_list = []\n",
    "\n",
    "tcon_reg_p = [0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8][::-1]\n",
    "tcon_reg_n = [0xE1, 0xE0, 0xDF, 0xDE, 0xDD, 0xDC, 0xDB, 0xDA, 0xD9][::-1]\n",
    "# tcon_gray  = [255, 254, 224, 192, 128, 64, 32, 1, 0]\n",
    "# 第二个绑点实际对应254灰阶，由于254到225亮度高，跨度大，254到225的亮度会偏高，导致gamma严重偏低\n",
    "# 测试发现238是上述测试情况下，绑点亮度距理想亮度差值最大的，因此在238画面调节254绑点------------该方案导致238以上灰阶严重偏高，254灰阶已达到10\n",
    "# 测试发现取252灰阶进行调试，234-250 253 254还是NG，可以继续下调灰阶到249看看\n",
    "# 无法cover情况下，只能通过ACC功能额外对Gamm进行修正\n",
    "\n",
    "# 对于不同的液晶3.2kmain 252，2393 247,能将最后一段拉到比较好的效果\n",
    "\n",
    "tcon_gray  = [255, 254, 224, 192, 128, 64, 32, 1, 0][::-1]\n",
    "tcon_target_reg = [0x14]+[0x00]*(len(tcon_reg_p)-2)+[0xFF]\n",
    "\n",
    "try:\n",
    "    # 1) 启动后立即显示一张空图，然后动态更新\n",
    "    win = NonBlockingImageWindow(\"Demo\", size=(800, 800), fps=10)\n",
    "\n",
    "    # RGB数据 BGR格式\n",
    "    img = np.zeros((800, 800, 3), dtype=np.uint8)\n",
    "    img[:, :, :] = 0\n",
    "    win.update(img, fmt=\"rgb\")\n",
    "    \n",
    "    \n",
    "    # 采集TCON绑点灰阶亮度\n",
    "    for i in tcon_gray:\n",
    "        img[:, :, :] = i\n",
    "        win.update(img, fmt=\"rgb\")\n",
    "        time.sleep(1)\n",
    "\n",
    "        flag = 1\n",
    "        while(flag):\n",
    "            try:\n",
    "                x_val, y_val, z_val = sensor.GetXYZ()\n",
    "                flag = 0\n",
    "            except:\n",
    "                flag = 1\n",
    "        y_list.append(y_val)\n",
    "        print(i,y_val)\n",
    "    \n",
    "    # 根据255 0灰阶计算各绑点理想亮度\n",
    "    y_target = [y_list[-1]]+[0]*(len(y_list)-2)+[y_list[0]]\n",
    "    for i in range(1,len(tcon_gray)-1,1):\n",
    "        y_target[i] = y_list[0]+(y_list[-1]-y_list[0])*(tcon_gray[i]/255)**gamma_target\n",
    "    \n",
    "    print(\"目标Gamma：\", gamma_target)\n",
    "    print(\"目标灰阶：\",tcon_gray)\n",
    "    print(\"目标亮度：\",y_target)\n",
    "\n",
    "\n",
    "    for g in range(1,len(tcon_gray)-1,1):\n",
    "    #for g in [1]:\n",
    "        # 更新灰阶画面\n",
    "        img = np.zeros((800, 800, 3), dtype=np.uint8)\n",
    "        img[:, :, :] = tcon_gray[g]\n",
    "        win.update(img, fmt=\"rgb\")\n",
    "\n",
    "        measured = {}            # 缓存已测量过的亮度\n",
    "        low, high = 0x00, 0xFF\n",
    "        while low < high-1:\n",
    "            mid = round((low + high) / 2)\n",
    "\n",
    "            # 测量 f(mid)\n",
    "            if mid not in measured:\n",
    "                jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_p[g],mid])\n",
    "                jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_n[g],mid])\n",
    "                time.sleep(0.2)\n",
    "                flag = 1\n",
    "                while(flag):\n",
    "                    try:\n",
    "                        __, y_temp, __ = sensor.GetXYZ()\n",
    "                        flag = 0\n",
    "                    except:\n",
    "                        flag = 1\n",
    "                \n",
    "                measured[mid] = -abs(y_temp-y_target[g])\n",
    "                #print(hex(mid), measured[mid])\n",
    "\n",
    "            # 测量 f(mid+1)\n",
    "            if (mid + 1) not in measured:\n",
    "                jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_p[g],mid+1])\n",
    "                jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_n[g],mid+1])\n",
    "                time.sleep(0.2)\n",
    "                flag = 1\n",
    "                while(flag):\n",
    "                    try:\n",
    "                        __, y_temp, __ = sensor.GetXYZ()\n",
    "                        flag = 0\n",
    "                    except:\n",
    "                        flag = 1\n",
    "\n",
    "                measured[mid+1] = -abs(y_temp-y_target[g])\n",
    "                #print(hex(mid+1), measured[mid + 1])\n",
    "\n",
    "            # 根据相邻点斜率判断峰值方向\n",
    "            if measured[mid] < measured[mid + 1]:\n",
    "                # 右侧更高，峰值在 (mid+1, high]\n",
    "                low = mid + 1\n",
    "            else:\n",
    "                # 左侧（含 mid）可能有峰值，舍弃右侧\n",
    "                high = mid\n",
    "            \n",
    "            #print(\"mid:\",mid,\"low:\",low,\"high:\",high)\n",
    "\n",
    "        result = max([(low,measured[low]), (mid,measured[mid]), (high, measured[high])], key=lambda x: x[1])[0]\n",
    "        tcon_target_reg[g] = result\n",
    "\n",
    "        # 此时 low == high，即峰值寄存器\n",
    "        peak_reg = low\n",
    "        jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_p[g],result])\n",
    "        jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_n[g],result])\n",
    "        time.sleep(0.2)\n",
    "        __, y_temp, __ = sensor.GetXYZ()\n",
    "        print(\"Target Gray\", tcon_gray[g],\"best reg:\",hex(result), \"Measure y\", y_temp, \"Target y\", y_target[g])\n",
    "\n",
    "    print(\"==============最优reg=============\")\n",
    "    print(\" \".join(f\"{n:02X}\" for n in tcon_reg_p))\n",
    "    print(\" \".join(f\"{n:02X}\" for n in tcon_reg_n))\n",
    "    print(\" \".join(f\"{n:02X}\" for n in tcon_target_reg))\n",
    "\n",
    "finally:\n",
    "    jt.jtool.DevClose(handle)\n",
    "    win.stop()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "033890a3",
   "metadata": {},
   "source": [
    "# 写入调试得到的gamma reg值\n",
    "仅在线写入，下电后失效"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8a756fbe",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 扫描JI2C\n",
    "devices = jt.scan_devices_sn()\n",
    "# 开启JI2C\n",
    "handle = jt.open_device(devices[0])\n",
    "\n",
    "try:\n",
    "    for g in range(1,len(tcon_gray)-1,1):\n",
    "        jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_p[g],tcon_target_reg[g]])\n",
    "        jt.i2c_write(handle=handle, addr=0xC2, reg=0x34, data=[tcon_reg_n[g],tcon_target_reg[g]])\n",
    "finally:\n",
    "    jt.jtool.DevClose(handle)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e13e74b",
   "metadata": {},
   "source": [
    "# 测试并计算GAMMA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3bb2a5c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_list = []\n",
    "sensor = EyeSensor(port='COM13')\n",
    "sensor.XYZmode()\n",
    "\n",
    "\n",
    "try:\n",
    "    # 1) 启动后立即显示一张空图，然后动态更新\n",
    "    win = NonBlockingImageWindow(\"Demo\", size=(800, 800), fps=10)\n",
    "\n",
    "    # RGB数据 BGR格式\n",
    "    img = np.zeros((800, 800, 3), dtype=np.uint8)\n",
    "    img[:, :, :] = 0\n",
    "    win.update(img, fmt=\"rgb\")\n",
    "    \n",
    "    gray_list = [0]+[i for i in range(1,256,4)]+[255]\n",
    "    # gray_list = [0]+[i for i in range(0,256,1)]\n",
    "    # gray_list = [i for i in range(0,256,1)]\n",
    "    # 采集TCON绑点灰阶亮度\n",
    "    for i in gray_list:\n",
    "        img[:, :, :] = i\n",
    "        win.update(img, fmt=\"rgb\")\n",
    "        time.sleep(0.2)\n",
    "\n",
    "        flag = 1\n",
    "        while(flag):\n",
    "            try:\n",
    "                if i>=20:\n",
    "                    x_val, y_val, z_val = sensor.GetXYZ(timeout=0.15)\n",
    "                else:\n",
    "                    x_val, y_val, z_val = sensor.GetXYZ()\n",
    "                flag = 0\n",
    "            except:\n",
    "                flag = 1\n",
    "        y_list.append(y_val)\n",
    "        # print(i,y_val)\n",
    "\n",
    "finally:\n",
    "    win.stop()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "807e476a",
   "metadata": {},
   "source": [
    "# 输出output.csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d25c2a2d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.microsoft.datawrangler.viewer.v0+json": {
       "columns": [
        {
         "name": "index",
         "rawType": "int64",
         "type": "integer"
        },
        {
         "name": "Gray",
         "rawType": "int64",
         "type": "integer"
        },
        {
         "name": "Y",
         "rawType": "float64",
         "type": "float"
        },
        {
         "name": "Gamma",
         "rawType": "float64",
         "type": "float"
        }
       ],
       "ref": "b597ebe4-f6dd-4df8-9e8f-b3f4342c11cf",
       "rows": [
        [
         "0",
         "0",
         "0.5336962",
         "0.0"
        ],
        [
         "1",
         "1",
         "0.5379405",
         "2.1404328841977067"
        ],
        [
         "2",
         "5",
         "0.6518157",
         "2.1706412215817936"
        ],
        [
         "3",
         "9",
         "0.960595",
         "2.1679569841468824"
        ],
        [
         "4",
         "13",
         "1.4675988",
         "2.172790592788556"
        ],
        [
         "5",
         "17",
         "2.1963948",
         "2.1750270330687917"
        ],
        [
         "6",
         "21",
         "3.1285456",
         "2.180841194506833"
        ],
        [
         "7",
         "25",
         "4.281886",
         "2.186220367757779"
        ],
        [
         "8",
         "29",
         "5.6266081",
         "2.194455123031516"
        ],
        [
         "9",
         "33",
         "7.2378602",
         "2.198695369683852"
        ],
        [
         "10",
         "37",
         "9.1606291",
         "2.1983810700676254"
        ],
        [
         "11",
         "41",
         "11.390744",
         "2.196054394711008"
        ],
        [
         "12",
         "45",
         "13.901027",
         "2.1939976326818282"
        ],
        [
         "13",
         "49",
         "16.66852",
         "2.193191212098063"
        ],
        [
         "14",
         "53",
         "19.59973",
         "2.196485189854932"
        ],
        [
         "15",
         "57",
         "22.835309",
         "2.1985304689447904"
        ],
        [
         "16",
         "61",
         "26.516406",
         "2.195970141568552"
        ],
        [
         "17",
         "65",
         "30.549488",
         "2.192444742147046"
        ],
        [
         "18",
         "69",
         "34.798374",
         "2.1913276130329145"
        ],
        [
         "19",
         "73",
         "39.149592",
         "2.1944766015505164"
        ],
        [
         "20",
         "77",
         "43.766624",
         "2.1979239738243477"
        ],
        [
         "21",
         "81",
         "48.677927",
         "2.2011609258470717"
        ],
        [
         "22",
         "85",
         "53.813571",
         "2.205478391218881"
        ],
        [
         "23",
         "89",
         "59.37877",
         "2.2074446405513686"
        ],
        [
         "24",
         "93",
         "65.45441",
         "2.2062426010760126"
        ],
        [
         "25",
         "97",
         "71.690804",
         "2.2074682687945213"
        ],
        [
         "26",
         "101",
         "78.040039",
         "2.2114991973703217"
        ],
        [
         "27",
         "105",
         "84.754514",
         "2.2146682413257044"
        ],
        [
         "28",
         "109",
         "91.807688",
         "2.217465261352136"
        ],
        [
         "29",
         "113",
         "99.553271",
         "2.215580001871399"
        ],
        [
         "30",
         "117",
         "107.82387",
         "2.2115392733974737"
        ],
        [
         "31",
         "121",
         "116.52079",
         "2.206713611036413"
        ],
        [
         "32",
         "125",
         "125.64888",
         "2.2011220687111313"
        ],
        [
         "33",
         "129",
         "134.71412",
         "2.200214966311294"
        ],
        [
         "34",
         "133",
         "144.28088",
         "2.197628772101228"
        ],
        [
         "35",
         "137",
         "154.09595",
         "2.1961314382353008"
        ],
        [
         "36",
         "141",
         "164.05682",
         "2.1967289459856936"
        ],
        [
         "37",
         "145",
         "173.96341",
         "2.2013929535869705"
        ],
        [
         "38",
         "149",
         "184.39271",
         "2.20420083029892"
        ],
        [
         "39",
         "153",
         "194.81206",
         "2.210602388076619"
        ],
        [
         "40",
         "157",
         "205.27303",
         "2.220097582786885"
        ],
        [
         "41",
         "161",
         "216.67545",
         "2.223702218906157"
        ],
        [
         "42",
         "165",
         "228.98496",
         "2.2218269885097026"
        ],
        [
         "43",
         "169",
         "242.07076",
         "2.2157980890936457"
        ],
        [
         "44",
         "173",
         "255.47655",
         "2.2101724637718236"
        ],
        [
         "45",
         "177",
         "268.7332",
         "2.2097033604928717"
        ],
        [
         "46",
         "181",
         "282.89522",
         "2.203646096047088"
        ],
        [
         "47",
         "185",
         "297.04963",
         "2.2013287264181933"
        ],
        [
         "48",
         "189",
         "311.49852",
         "2.199693419650305"
        ],
        [
         "49",
         "193",
         "326.38587",
         "2.1971969023614286"
        ]
       ],
       "shape": {
        "columns": 3,
        "rows": 66
       }
      },
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Gray</th>\n",
       "      <th>Y</th>\n",
       "      <th>Gamma</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.533696</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.537941</td>\n",
       "      <td>2.140433</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5</td>\n",
       "      <td>0.651816</td>\n",
       "      <td>2.170641</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>9</td>\n",
       "      <td>0.960595</td>\n",
       "      <td>2.167957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>13</td>\n",
       "      <td>1.467599</td>\n",
       "      <td>2.172791</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>241</td>\n",
       "      <td>530.814190</td>\n",
       "      <td>2.215792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>245</td>\n",
       "      <td>550.102360</td>\n",
       "      <td>2.234467</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>249</td>\n",
       "      <td>569.798570</td>\n",
       "      <td>2.275390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>253</td>\n",
       "      <td>590.898070</td>\n",
       "      <td>2.258608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>255</td>\n",
       "      <td>601.491270</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>66 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Gray           Y     Gamma\n",
       "0      0    0.533696  0.000000\n",
       "1      1    0.537941  2.140433\n",
       "2      5    0.651816  2.170641\n",
       "3      9    0.960595  2.167957\n",
       "4     13    1.467599  2.172791\n",
       "..   ...         ...       ...\n",
       "61   241  530.814190  2.215792\n",
       "62   245  550.102360  2.234467\n",
       "63   249  569.798570  2.275390\n",
       "64   253  590.898070  2.258608\n",
       "65   255  601.491270  0.000000\n",
       "\n",
       "[66 rows x 3 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gamma_list = []\n",
    "for i in range(1,len(gray_list)-1,1):\n",
    "    try:\n",
    "        gamma_list.append(math.log((y_list[i]-y_list[0])/(y_list[-1]-y_list[0]), gray_list[i]/255))\n",
    "    except:\n",
    "        # 出现L1亮度>L0情况\n",
    "        gamma_list.append(math.log((0.001)/(y_list[-1]-y_list[0]), gray_list[i]/255))\n",
    "\n",
    "df = pd.DataFrame(list(zip(gray_list, y_list, [0.0]+gamma_list+[0.0])), columns=[\"Gray\",\"Y\", \"Gamma\"])\n",
    "display(df)\n",
    "df.to_csv(\"output.csv\", index=False, encoding=\"utf-8\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2cdc740b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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IiLHcm0xy5mTurOVQePMWDfmrB8z1o8Z6xcWgIy5mgERERERhRTHrGYwd+5cXHTRRWjSpImt2KdNm3bc6/znP/9Bly5dULt2bSQmJuLGG2/Enj17yn3fnDmpl2SblpbGjJVjzvoxY/2YsX4FAcg4qMVsdna2LUxfe+01vy7/008/YejQoRg+fDhWr16NTz75BIsXL8bNN99c7vt2WYe0q0i28kmOGevGnPVjxvoxY/1MADKORBANHjzYnvy1YMECtGzZEnfeeaf9u1WrVrj11lsxfvz4atxLIiIiIgpVQS1my6tnz5545JFHMH36dFsE79q1C59++inOP//8Mq9z9OhRe/KQTwciMzPTu02GOISHh9sucN9PDmVtl21yXlnb8/Pzi+yDbBfFu9jL2h4REWFv13e7Z1/K2u7vvruhTbKvMtZGso6MjFTRpuL7zjYBubm5Nud9+/bZ/dbQJo05VaZN8vvBgwfta9l38oiT26Qxp8q0KS8vz/s6lvdrDW3SmJOpRJvkd3kde96r/W2Tp07zq0fXhAjZlalTpx73ch9//LGJjY01kZGR9joXXXSRycnJKfPyY8aMsZfjiSeeeOKJJ5544gmOOm3duvW4tWHIrGYg1fzUqVMxZMiQMi+zZs0anHPOObjnnnswaNAgO6D4gQceQLdu3fDWW2/51TMrlX6LFi2wZcsWO0uO9JFP+c2aNcPWrVu5YoVizFk/ZqwfM9ZvfwUzlvL0wIEDdpEAT2+timEG48aNQ+/evW0BKzp37oyYmBj06dMHTz/9tF3doLgaNWrYU3FSyPKFo5vky4z1Y876MWP9mLF+dSuQsb+djo46aMKhQ4dKVOee8Rch0sFMRERERAEU1GJWBgSvWLHCnkRqaqr9XYYAiIcfftguxeUha9J+9tlnmDhxIlJSUuxSXbKyQffu3W03NBERERG5S1CHGSxduhQDBgzw/n3vvffan9dffz0mT55sx8R6ClsxbNgwO37i1VdfxX333Yf69evjrLPOKtfSXDLkYMyYMaUOPSAdmLE7MGf9mLF+zFi/GgHIOGQmgBERERERlZejxswSEREREfliMUtEREREjsViloiIiIgci8UsERERETmW64rZ1157DS1btkTNmjVx5plnYvHixcHeJaqgJ554wh45zvfUoUMH7/lHjhzByJEjccIJJyA2NhaXXXYZdu7cGdR9pmObO3euXYJPltqTPKdNm1bkfJmv+vjjj9sDpNSqVcseETA5ObnIZfbu3YtrrrnGLs4tK54MHz7cLgNIzshYVq0p/ro+77zzilyGGYf+AY7kyJx16tRBo0aN7JE9161bV+Qy/rw/y2pGF1xwAWrXrm1vRw6YlJeXF+DWUEUz7t+/f4nX8m233VYtGbuqmP3oo4/s8l+yRMTPP/+MLl262MPi7tq1K9i7RhV08skn2yXcPKd58+Z5z5PDHn/55Zf45JNPMGfOHOzYsQOXXnppUPeXji07O9u+LuVDZ2kmTJiAl19+GW+88QYWLVpkjwAor2H5j9FDipzVq1dj5syZ+Oqrr2zxdMsttwSwFVSZjIUUr76v6w8++KDI+cw4tMn7rRSqCxcutBnl5uZi4MCBNnt/35/z8/NtkZOTk4P58+fjnXfesUt2yodZckbG4uabby7yWpb38GrJ2LhI9+7dzciRI71/5+fnmyZNmphx48YFdb+oYsaMGWO6dOlS6nmZmZkmKirKfPLJJ95tv/32myxDZxYsWBDAvaSKkqymTp3q/bugoMAkJCSY5557rkjONWrUMB988IH9e82aNfZ6S5Ys8V5mxowZJiwszGzfvj3ALaDyZiyuv/568+c//7nM6zBj59m1a5fNbM6cOX6/P0+fPt2Eh4eb9PR072UmTpxo6tata44ePRqEVlB5Mhb9+vUzd911V5nXqcqMXdMzK5X/smXL7NeSHnJoXPl7wYIFQd03qjj5ilm+rmzdurXtrfEcZEOylk+KvnnLEITmzZszb4eSIwSmp6cXyVSO2y3DhTyZyk/52vmMM87wXkYuL6916cklZ5g9e7b9yrF9+/YYMWIE9uzZ4z2PGTtPVlaW/RkXF+f3+7P8POWUU9C4cWPvZeRbmP3799teeQrtjD3+85//ID4+Hp06dbJHdT106JD3vKrMOKhHAAukjIwM26Xt+6AJ+Xvt2rVB2y+qOCli5CsJ+Q9Pvr4YO3Ys+vTpg1WrVtmiJzo62v6nVzxvOY+cx5Nbaa9hz3nyU4ogX5GRkfYNlrk7gwwxkK+bW7VqhY0bN+KRRx7B4MGD7X98ERERzNhhCgoKcPfdd6N37962oBH+vD/Lz9Je657zKLQzFldffTVatGhhO5x+/fVXjB492o6r/eyzz6o8Y9cUs6SP/Afn0blzZ1vcygvn448/tpODiMh5rrzySu/v0msjr+0TTzzR9taeffbZQd03Kj8ZVykdDL7zGcgdGd/iM45dXssycVdew/IhVV7TVck1wwykm1s+1RefLSl/JyQkBG2/qOrIp/x27dphw4YNNlMZWpKZmVnkMszbuTy5Hes1LD+LT+iUmbEy+525O5MMIZL3b3ldC2bsHKNGjbIT9H744QckJSV5t/vz/iw/S3ute86j0M64NNLhJHxfy1WVsWuKWflKo2vXrvj++++LdI3L3z179gzqvlHVkKV55BOffPqTrKOioorkLV9vyJha5u1M8rWzvMH5Zipjq2ScpCdT+Sn/QcqYPI9Zs2bZ17rnjZScZdu2bXbMrLyuBTMOfTK3T4qcqVOn2mzktevLn/dn+bly5coiH1xk1rwsx3bSSScFsDVUkYxLs2LFCvvT97VcZRkbF/nwww/tzOfJkyfbGbG33HKLqV+/fpGZdOQc9913n5k9e7ZJTU01P/30kznnnHNMfHy8nVUpbrvtNtO8eXMza9Yss3TpUtOzZ097otB14MABs3z5cnuSt6cXX3zR/r5582Z7/rPPPmtfs59//rn59ddf7az3Vq1amcOHD3tv47zzzjOnnXaaWbRokZk3b55p27atueqqq4LYKvI3Yznv/vvvtzPa5XX93XffmdNPP91meOTIEe9tMOPQNmLECFOvXj37/pyWluY9HTp0yHuZ470/5+XlmU6dOpmBAweaFStWmK+//to0bNjQPPzww0FqFZUn4w0bNpgnn3zSZiuvZXnPbt26tenbt2+1ZOyqYla88sor9gUUHR1tl+pauHBhsHeJKuiKK64wiYmJNsumTZvav+UF5CEFzu23324aNGhgateubS655BL7YqPQ9cMPP9gCp/hJlmvyLM/1f//3f6Zx48b2g+nZZ59t1q1bV+Q29uzZYwub2NhYu8TLDTfcYIskCv2M5T9C+Y9N/kOTpZtatGhhbr755hIdDsw4tJWWr5wmTZpUrvfnTZs2mcGDB5tatWrZjgrpwMjNzQ1Ci6i8GW/ZssUWrnFxcfa9uk2bNuaBBx4wWVlZ1ZJx2O87RURERETkOK4ZM0tERERE+rCYJSIiIiLHYjFLRERERI7FYpaIiIiIHIvFLBERERE5FotZIiIiInIsFrNERERE5FgsZomIiIjIsVjMEhEREZFjsZglInKg/Px89OrVC5deemmR7VlZWWjWrBkeffTRoO0bEVEg8XC2REQOtX79epx66qn417/+hWuuucZuGzp0KH755RcsWbIE0dHRwd5FIqJqx2KWiMjBXn75ZTzxxBNYvXo1Fi9ejMsvv9wWsl26dAn2rhERBQSLWSIiB5O38LPOOgsRERFYuXIl7rjjDjz22GPB3i0iooBhMUtE5HBr165Fx44dccopp+Dnn39GZGRksHeJiChgOAGMiMjh3n77bdSuXRupqanYtm1bsHeHiCig2DNLRORg8+fPR79+/fDtt9/i6aefttu+++47hIWFBXvXiIgCgj2zREQOdejQIQwbNgwjRozAgAED8NZbb9lJYG+88Uawd42IKGDYM0tE5FB33XUXpk+fbpfikmEG4p///Cfuv/9+OxmsZcuWwd5FIqJqx2KWiMiB5syZg7PPPhuzZ8/Gn/70pyLnDRo0CHl5eRxuQESuwGKWiIiIiByLY2aJiIiIyLFYzBIRERGRY7GYJSIiIiLHYjFLRERERI7FYpaIiIiIHIvFLBERERE5FotZIiIiInIsFrNERERE5FgsZomIiIjIsVjMEhEREZFjsZglIiIiIjjV/wOZmFW5rf4fzgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "plt.figure(figsize=(8, 5))\n",
    "\n",
    "# 画散点\n",
    "plt.scatter(gray_list[1:-1], gamma_list, color=\"blue\", s=10, label=\"Scatter Points\")\n",
    "# 画连线\n",
    "plt.plot(gray_list[1:-1], gamma_list, color=\"red\", linewidth=1, label=\"Line\")\n",
    "\n",
    "# 设置坐标轴范围\n",
    "plt.xlim(0, 256)\n",
    "plt.ylim(1.8, 2.6)\n",
    "\n",
    "# 添加网格和图例\n",
    "plt.grid(True, linestyle=\"--\", alpha=0.5)\n",
    "plt.legend()\n",
    "plt.xlabel(\"X\")\n",
    "plt.ylabel(\"Y\")\n",
    "plt.title(\"Scatter with Line\")\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0ad6912c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
